<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>连接器测试V0.0.2</title>

<script type="text/javascript" src="js/comet4j.js"></script>




<script type="text/javascript">
        	var serverUrl = 'conn';
        	var connector;
        	function init(){
        		connector = new JS.Connector({
    				url :serverUrl
    			});
        		connector.on({
    				beforeConnect : function(url, conn){
    					var str = '[beforeConnect] :'+new Date().toLocaleString()+'----<br>'+
    							'url :'+url+'<br>'+
    							'--------<br>';
    					log('Engine_log',str);
    				},
    				connect : function(cId, channels, ws, timeout, conn){
    					
    					var str = '[connect] :'+new Date().toLocaleString()+'----<br>'+
    							'cId :'+cId+'<br>'+
    							'channels :'+channels+'<br>'+
    							'ws :'+ws+'<br>'+
    							'timeout :'+timeout+'<br>'+
    							'--------<br>';
    					//alert(str);
    					log('Engine_log',str);

    				},
    				beforeStop : function(cId, url,  conn){
    					var str = '[beforeStop] :'+new Date().toLocaleString()+'----<br>'+
    							'url :'+url+'<br>'+
    							'cid :'+cId+'<br>'+
    							'--------<br>';
    					log('Engine_log',str);

    				},
    				stop : function(cause,cId, url, conn){
    					var str = '[stop] :'+new Date().toLocaleString()+'----<br>'+
    							'url :'+url+'<br>'+
    							'cid :'+cId+'<br>'+
    							'cause :'+cause+'<br>'+
    							'--------<br>';
    					log('Engine_log',str);

    				},
    				message : function(channel, data, time, conn){
    					var str = '[message] :'+new Date().toLocaleString()+'----<br>'+
    							'channel :'+channel+'<br>'+
    							'data :'+data+'<br>'+
    							'time :'+time+'<br>'+
    							'--------<br>';
    					log('Engine_log',str);

    				},
    				revival : function(url, cId, conn){
    					var str = '[revival] :'+new Date().toLocaleString()+'----<br>'+
    							'cId :'+cId+'<br>'+
    							'--------<br>';
    					log('Engine_log',str);
    				}

    			});
    			connector._xhr.on({
    				readyStateChange : function(readyState,status,xhr){
    					var str = '[readyStateChange] :'+new Date().toLocaleString()+'----<br>'+
    					'readyState：'+readyState+'<br>'+
						'status：'+status+'<br>'+
						'responseText：'+xhr.responseText+'<br>'+
						'--------<br>';
    					log('XMLHttpRequest_log',str);
    				},
    				timeout : function(conn){
    					var str = '[timeout] :'+new Date().toLocaleString()+'----<br>'+
    					'readyState：'+conn.readyState+'<br>'+
						'status：'+conn.status+'<br>'+
						'responseText：'+conn.responseText+'<br>'+
    					'--------<br>';
    					log('XMLHttpRequest_log',str);
    				},
    				abort : function(conn){
    					var str = '[abort] :'+new Date().toLocaleString()+'----<br>'+
    					'readyState：'+conn.readyState+'<br>'+
						'status：'+conn.status+'<br>'+
						'responseText：'+conn.responseText+'<br>'+
    					'--------<br>';
    					log('XMLHttpRequest_log',str);
    				},
    				error : function(conn){
    					var str = '[error] :'+new Date().toLocaleString()+'----<br>'+
    					'readyState：'+conn.readyState+'<br>'+
						'status：'+conn.status+'<br>'+
						'responseText：'+conn.responseText+'<br>'+
    					'--------<br>';
    					log('XMLHttpRequest_log',str);
    				},
    				load : function(conn){
    					var str = '[load] :'+new Date().toLocaleString()+'----<br>'+
    					'readyState：'+conn.readyState+'<br>'+
						'status：'+conn.status+'<br>'+
						'responseText：'+conn.responseText+'<br>'+
    					'--------<br>';
    					log('XMLHttpRequest_log',str);
    				},
    				progress : function(conn){
    					var str = '[progress] :'+new Date().toLocaleString()+'----<br>'+
    					'readyState：'+conn.readyState+'<br>'+
						'status：'+conn.status+'<br>'+
						'responseText：'+conn.responseText+'<br>'+
    					'--------<br>';
    					log('XMLHttpRequest_log',str);
    				}
    			});
    			conn();
            }
			
			function log(id,str){
				if(JS.isIE6 && id == 'Engine_log'){
					return;
				}
				var t = document.getElementById(id).innerHTML;
				document.getElementById(id).innerHTML += str;
				document.getElementById(id).scrollTop = document.getElementById(id).scrollHeight;
			}
			
			
			function conn(){
				connector.start();
			}
			function stop(){
				connector.stop('客户主动停止');
			}	
			function cl(){
				document.getElementById('XMLHttpRequest_log').innerHTML = '';		
				document.getElementById('Engine_log').innerHTML = '';

			}		
			function sstop(){
				connector._xhr.abort();
			}
            //JS.EventEngine.start(serverUrl + '?action=conn');
        </script>
</head>
<body onload="init()">

	<table style="width: 100%">
		<tr>
			<td style="width: 50%;">连接器测试</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td style="" colspan="2">&nbsp; <input name="Reset2"
				type="button" onclick="conn();" value="连接" /> <input name="Reset3"
				type="button" onclick="stop();" value="断开" /> <input name="Reset4"
				type="button" onclick="cl();" value="清空" /> <input name="Reset3"
				type="button" onclick="sstop();" value="强力断开" /></td>
		</tr>
		<tr>
			<td colspan="2">XMLHttpRequest onReadyStateChange Event ：<br />
				<div id="XMLHttpRequest_log"
					style="width: 100%; height: 200px; overflow: auto; border: 1px navy solid;"></div>
			</td>
		</tr>
		<tr>
			<td colspan="2">Connector Events ：</td>
		</tr>
		<tr>
			<td colspan="2">
				<div id="Engine_log"
					style="width: 100%; height: 200px; overflow: auto; border: 1px navy solid;"></div>
			</td>
		</tr>
		<tr>
			<td colspan="2">测试指导：<br /> [1].测试无信息接收连接的状态是否稳定。<br />
				[2].测试有信息接收连接的状态是否稳定。<br /> [3].正在连接时断开连接，尝试是否可以再次连接。<br />
				[4].正在连接时服务器突然停止，连接是否会自动停止。<br /> 测试结果：<br />
				IE8：8.0.7600.16385——完全通过<br /> IE7：7.0.5730.13——未通过<br />
				IE6：6.0.290——[4]项未通过<br /> Chrome：7.0.517.44——完全通过<br />
				FireFox：3.6.13——[4]项未通过<br /> FireFox：3.6.15——[4]项未通过<br />
				Safari：5.0.2(7533.18.15)——完全通过<br /> Safari：5.0.2(7533.19.4)——完全通过<br />
				iPhone:4.0.1 iPhone 3GS Apple-iPhone2C1/801.306——[4]项未通过<br /> 问题：<br />
				当服务器关掉以后FireFox和IE6无法正常触发stop事件。原因是：readyState：4,status：0和readyState：1,status：0<br />
				IE7xmlhttprequest readystate状态一旦到达4就不再触发onReadyStateChange事件 可改进：<br />
				使用Beat使真正断开的连接可以在客户端停止，解决FireFox和IE6的问题。<br />
				不同的工作模式下可以有不同的超时时间，使效率更高。<br /> 前后台关于长连接与长轮询的处理最好独立分开，需重构。<br /></td>
		</tr>
	</table>

</body>
</html>
